home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_actor_spider.cog < prev    next >
Text File  |  1999-11-15  |  3KB  |  114 lines

  1. # Jones 3D Cog Script
  2. #
  3. # actor_Spider.cog
  4. #
  5. # [MDR] [RT]
  6. #
  7. # Special behavior for spiders.
  8. #
  9. # (C) 1999 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12.  
  13. symbols
  14.  
  15.     message        created
  16.     message        touched
  17.     message        timer
  18.     message        killed
  19.  
  20.     material    bloodMat=gen_a4sprite_blood_grn.mat    local
  21.  
  22.     template    tplSplort=+vulcansplort
  23.     template    tplFire=+bazooka_exp_fire    local
  24.     template    tplSmoke=+bazooka_exp_smoke    local
  25.     template    tplSparks=lavadeathsparks    local
  26.  
  27.     thing        spidey                        local
  28.     thing        source                        local
  29.  
  30.     int            index                        local
  31.     int            damageType                    local
  32.     int            attachMesh                    local
  33.  
  34.     flex        crushDamage                    local
  35.  
  36. end
  37.  
  38. # ===================================================================
  39. code
  40.  
  41. # -------------------------------------------------------------------
  42. created:
  43.  
  44.     AISetMode(GetSenderRef(), 0x2000000); # Set MODE_NOCHASING
  45.     return;
  46.  
  47. # -------------------------------------------------------------------
  48. touched:
  49.  
  50.     spidey = GetSenderRef();
  51.     source = GetSourceRef();
  52.  
  53.     if (source == GetLocalPlayerThing())
  54.     {
  55.         # Ignore touch if Indy's standing still...
  56.         if ( VectorLen(GetThingVel(source)) == 0 )
  57.             return;
  58.  
  59.         # If we weren't just stepped on...
  60.         if (GetThingUserData(spidey) == 0) # We weren't just stepped on...
  61.         {
  62.             # Remember what the fiend did!
  63.             SetThingUserData(spidey, 1);
  64.             SetThingTimer(spidey, 2.0);
  65.  
  66.             # Apply some damage... 
  67.             crushDamage = GetThingMaxHealth(spidey) / 2;
  68.             DamageThing(spidey, crushDamage, 0x8, source);
  69.         }
  70.     }
  71.     return;
  72.  
  73. # -------------------------------------------------------------------
  74. timer:
  75.  
  76.     # We're eligible to be stepped on again...how nice
  77.     spidey = GetSenderRef();
  78.     SetThingUserData(spidey, 0);
  79.  
  80.     return;
  81.  
  82. # -------------------------------------------------------------------
  83. killed:
  84.  
  85.     spidey = GetSenderRef();
  86.     damageType = GetParam(1);
  87.  
  88.     if (damageType == 0x8) # Doh! Crushed to death...
  89.     {
  90.         attachMesh = GetMeshByName(spidey, "spbelly");
  91.         if (attachMesh != -1)
  92.         {
  93.             AttachThingToThingMesh(spidey, tplSplort, attachMesh); 
  94.             MaterialAnim(bloodMat, 16.0, 0x0);
  95.         }
  96.     }
  97.     else if (damageType == 0x200) # I fell in the lava...
  98.     {
  99.         Sleep(0.1);
  100.         CreateThing(tplFire, spidey);
  101.         Sleep(0.3);
  102.         CreateThing(tplSmoke, spidey);
  103.         SetThingFlags(spidey, 0x80000);
  104.  
  105.         for (index = 0; index < 10; index = index + 1)
  106.         {
  107.             CreateThing(tplSparks, spidey);
  108.             Sleep(0.03);
  109.         }
  110.     }
  111.     return;
  112.  
  113. end
  114.